package pruebas;

import avanzadas.BuscadorDeCamino;
import basicas.Posicion;
import niveles.Tablero;
import juego.AlgoTank;
import juego.Pared;
import juego.ParedLadrillos;
import juego.enemigos.GrizzlyBattleTank;
import juego.enemigos.TanqueEnemigo;
import juego.enums.tipoMovimiento;
import junit.framework.*;

public class BuscadorDeCaminoTest extends TestCase {

	Tablero tablero;
	TanqueEnemigo tanqueEnemigo;
	AlgoTank algoTank;
	BuscadorDeCamino buscador;
	
	public void setUp() {
		tablero = new Tablero();
		tanqueEnemigo = new GrizzlyBattleTank(new Posicion(5, 5));
		algoTank = new AlgoTank(new Posicion(10, 5));
		buscador = new BuscadorDeCamino(tanqueEnemigo, tablero);
		tanqueEnemigo.setBuscador(buscador);
	}
	
	public void testBuscarCamino() {
		tipoMovimiento tm;
		tm = buscador.buscarCamino(algoTank.getPosicion());
		assertTrue(tm == tipoMovimiento.derecha);
		
		tanqueEnemigo = new GrizzlyBattleTank(new Posicion(5, 5));
		algoTank = new AlgoTank(new Posicion(5, 10));
		buscador = new BuscadorDeCamino(tanqueEnemigo, tablero);
		tanqueEnemigo.setBuscador(buscador);
		
		tm = buscador.buscarCamino(algoTank.getPosicion());
		assertFalse(tm == tipoMovimiento.derecha);
	}
	
	public void testBuscarCamino2() {
		tipoMovimiento tm;
		tm = buscador.buscarCamino(algoTank.getPosicion());
		assertFalse(tm == tipoMovimiento.izquierda);
		
		tanqueEnemigo = new GrizzlyBattleTank(new Posicion(5, 5));
		algoTank = new AlgoTank(new Posicion(0, 10));
		buscador = new BuscadorDeCamino(tanqueEnemigo, tablero);
		tanqueEnemigo.setBuscador(buscador);
		
		tm = buscador.buscarCamino(algoTank.getPosicion());
		assertTrue(tm == tipoMovimiento.izquierda);
	}
	
	public void testBuscarCamino3() {
		tipoMovimiento tm;
		
		Pared pared;
		pared = new ParedLadrillos(new Posicion(9, 5));
		tablero.ocuparPosicion(pared);
		pared = new ParedLadrillos(new Posicion(11, 5));
		tablero.ocuparPosicion(pared);
		pared = new ParedLadrillos(new Posicion(10, 4));
		tablero.ocuparPosicion(pared);
		pared = new ParedLadrillos(new Posicion(10, 6));
		tablero.ocuparPosicion(pared);
		
		tm = buscador.buscarCamino(algoTank.getPosicion());
		assertTrue(tm == null);
	}

	public static void main (String[] args) {
		junit.swingui.TestRunner.run(BuscadorDeCaminoTest.class);
	}

}
